As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is an information handling system (IHS). An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for such systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
In a virtualization environment, virtualization software (e.g., hypervisor, virtual machine monitor) or operating systems (OSs) may allow multiple machines, i.e., virtual machines (VMs), to run on a host IHS. The virtualization software or OSs may need to provide guaranteed performance for its virtual machines (VM). To that end, in systems where a performance or wattage optimization mode is enabled via an operating system (OS) based driver, as in MICROSOFT® WINDOWS®, for example, the OS based driver may rely on knowing which performance state (i.e., P-state) the central processing unit (CPU) is running.
Typically, an OS and or virtualization software may manage the CPU performance states through their own respective driver(s). However, in some instances, the P-states may be managed outside of the OS context, such as, via BIOS, stored in non-volatile memory of the IHS, or baseboard management controller (BMC). Under current implementations, BIOS may be unable to report the P-states to the OS and/or virtualization software since doing so may enable the OS or virtualization software to also control the P-states. Therefore, conflicts between the OS or virtualization software and the BIOS/BMC based performance state manager may exist as each component may have its own algorithms for determining when to change P-states. As a result, performance state objects are not currently available to a typical OS or virtualization software, and therefore, the OS or virtualization software may have no knowledge of the current performance state(s) at which the CPU is running.
Thus, a need exists for methods and systems that would allow a BIOS/firmware to report the availability of CPU performances states and/or the maximum available P-states to an OS and/or virtualization software while preventing the OS and/or virtualization software from accessing control of the performance states.